'''
# encoding=utf-8
'''
import warnings

warnings.filterwarnings('ignore')
#显示中文
from pylab import *  #显示中文

mpl.rcParams['font.sans-serif'] = ['SimHei']  #显示中文
#画图中显示负号
import matplotlib

matplotlib.rcParams['axes.unicode_minus'] = False

import pandas as pd
from sklearn.cluster import AgglomerativeClustering
import matplotlib.pyplot as plt
import scipy.cluster.hierarchy as sch

# 使用层次聚类，完成以下操作：
# 1．	将16.9,38.5,39.5,80.8,82,34.6,116.1中每个信息作为数据进行处理（10分）
dict = {'x1':[16.9,38.5,39.5,80.8,82,34.6,116.1]}
data = pd.DataFrame(dict)
# 2．	模型生成
# a)	创建凝聚聚类，生成三个簇（10分）
ac = AgglomerativeClustering(n_clusters=3)
# b)	拟合数据（10分）
ac.fit(data)
# c)	打印样本聚类后的结果（10分）
data['cluster'] = ac.labels_
# 3．	对层次聚类进行可视化效果处理
# a)	数据使用欧式距离进行度量（15分）
# 生成点与点之间的距离矩阵,这里用的欧氏距离:
dis = sch.distance.pdist(data, 'euclidean')
# b)	使用簇凭据距离进行就算（15分）
#将层级聚类结果以树状图表示出来
model = sch.linkage(dis, method='average')
# c)	生成模型图，每个样本分别使用A-G进行表达（10分）
pic = sch.dendrogram(model,labels=['A','B','C','D','E','F','G'])
# d)	保存生成模型图（10分）
plt.savefig('plot_points.png')
# e)	显示图效果（10分）
plt.show()
